﻿#include "qdirutils.h"
#include <QDebug>
#include <QFileInfo>

// 创建单个文件夹
bool QDirUtils::createFolder(const QString &path)
{
    QDir dir(path);
    return dir.mkpath(".");
}

// 删除文件夹及其内容（谨慎使用）
bool QDirUtils::removeFolder(const QString &path, bool recursive)
{
    QDir dir(path);
    return dir.removeRecursively() || (recursive ? dir.rmpath(".") : dir.rmdir("."));
}

// 检查文件夹是否存在
bool QDirUtils::folderExists(const QString &path)
{
    QDir dir(path);
    return dir.exists();
}

// 列出文件夹中的所有条目（文件+子文件夹）
QStringList QDirUtils::listEntries(const QString &path)
{
    QDir dir(path);
    return dir.entryList(QDir::AllEntries | QDir::NoDotAndDotDot);
}

// 列出文件夹中的所有文件
QStringList QDirUtils::listFiles(const QString &path)
{
    QDir dir(path);
    return dir.entryList(QDir::Files);
}

// 列出文件夹中的所有子文件夹
QStringList QDirUtils::listSubFolders(const QString &path)
{
    QDir dir(path);
    return dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
}

// 递归创建多级文件夹
bool QDirUtils::createNestedDirectories(const QString &path)
{
    // 直接使用 mkpath 创建整个路径
    if (QDir().mkpath(path)) {
        qDebug() << "Successfully created multi-level folders up to:" << path;
        return true;
    } else {
        qDebug() << "Failed to create directory:" << path;
        return false;
    }
}
